<?php
namespace Ipartek\PruebaBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Ipartek\PruebaBundle\Entity\Curso;
use Ipartek\PruebaBundle\Entity\Alumno;
use Ipartek\PruebaBundle\Entity\Inscripcion;

/**
 * Fixtures de la entidad Inscripcion.
 * Crea para cada curso registrado entre 0 y N Max_alumnos.
 */
class Inscripciones extends AbstractFixture implements OrderedFixtureInterface
{
	
	public function getOrder()
	{
		return 3;
	}
	
	public function load(ObjectManager $manager)
	{
		// Obtener todos los cursos y alumnos de la base de datos
        $cursos = $manager->getRepository('IpartekPruebaBundle:Curso')->findAll();
        $alumnos = $manager->getRepository('IpartekPruebaBundle:Alumno')->findAll();
        
        foreach ($cursos as $curso) 
        {
        	$max_alum=rand(0, $curso->getMaxAlumnos());
        	$i=0;
        	
        	if ($max_alum>0) {        	
        		foreach ($alumnos as $alumno) 
        		{
        			if ($i<$max_alum){
        				$inscripcion = new Inscripcion();
        		
        				$inscripcion->setCurso($curso);
        				$inscripcion->setAlumno($alumno);
        				$inscripcion->setFecha($curso->getFechaIni()->modify('-'.rand(1, 12).' month'));

        				$manager->persist($inscripcion);    

        				$i++;
        			}   		
        	    }
        	}
        }

        $manager->flush();
	
	}
	
}